Communications module for controlling the operation of a private branch exchange

ABSTRACT

A communications module for communicating between a computer network ( 1, 2, 3, 4 ) and a private branch exchange ( 5 ), where the communications module is arranged and adapted so as:  
     a. to receive commands from the computer network ( 1, 2, 3, 4 ) (computer network commands  13 ));  
     b. if necessary to translate the computer network commands ( 13 ) into a form suitable for input into the private branch exchange ( 5 ) (private branch exchange commands ( 14 )); and  
     c. to send the private branch exchange commands ( 14 ) to the private branch exchange ( 5 );  
     to effect programming of the private branch exchange ( 5 ).

[0001] This invention relates to a telecommunications system comprisinga computer network, a private branch exchange and a communicationsmodule for controlling the operation of the private branch exchange(PBX).

[0002] In-house telephone systems commonly use a PBX to connect a smallnumber of trunk lines to a larger number of telecommunications devicessuch as telephones (digital or analogue), fax machines, CCTV etc. Inconjunction with a telephone system, an organisation commonly also has acomputer network system, typically having one or more server computersand a number of client computers. Typically, the computer network isconnected to the external public telephone network (e.g. so as toprovide Internet access) the connection being made through a routingbox, either via the PBX or via separate telephone lines.

[0003] In a typical setup, although a user may have a computer(connected to the computer network) and a telephone (connected to thePBX) on his desk, the two items are separate in their operation.

[0004] A typical PBX has two types of external port that can be used tofind out what is going on inside the PBX: a programming port and anevent port. The programming port is how the exchange is programmed. Itallows information to be put into the PBX and to be extracted from thePBX. The event port shows what events have occurred and, with somesophisticated software, what is currently happening. Some PBXs only haveone external port available so the port combines both features. In atypical configuration, one telephone is nominated the master telephone.From this telephone certain features of the PBX can be programmed, butother changes must be made by a telephone engineer by way of theprogramming port.

[0005] Systems do exist which seek to integrate computers with varioustelephony functions. These systems are known as Computer TelephonyIntegration (CTI) systems. It is usual to describe CTI solutions ascoming in one of two types: first-party call control or third-party callcontrol. In first-party call control, the telephone is attached directlyto the desk PC. In third-party call control, the computer network andthe PBX are linked at the computer server level with a serverapplication being able to set up and redirect calls more flexibly.Typically, in such third-party systems the computer network is connectedto the event port of the PBX so that the computer network caninterrogate the PBX.

[0006] Because a CTI system is connected to an event port, the PBX canonly report current events to the server. Although it is possible for aCTI system to make telephone calls from the CTI software, the system canonly react to the state of the PBX and cannot alter its state (i.e.program it).

[0007] A typical PBX has a working memory and a temporary memory.Changes can be uploaded to the temporary memory and then moved acrossinto the working memory. Requests can be categorised into critical andnon-critical. Non-critical requests can be moved directly into theworking memory. Critical ones require the PBX to go through a powercycle. The power cycle requires an engineer to shut down the PBX andwait for 10 seconds before powering it back up. This causes the normaltelephone service to be temporarily interrupted.

[0008] Known PBXs have no direct output devices that show theinformation held in the working memory. The only way an engineer canfind out if a request has been successfully loaded is by a physicalcheck. Some of these checks are easier than others. A typical simplecheck might be required when a user has programmed a flexible featurecontrol button to play background music. To check that the programminghas been successful, the user need only to select the button and listen.A more complex situation occurs when an engineer has programmed a grouppick up entry. To be able to test this thoroughly, everyone involved inthe group pickup (which could be anywhere within the company building,for example) would have to be waiting for their telephone to ring at adesignated time.

[0009] Information in the PBX is stored as a fixed number of programs.Each program has a number and then contains the relevant information.Concepts within this relevant information include: ports, speed-dials,group pickup. A program within the PBX can be changed by altering therelevant information.

[0010] One of the basic concepts for a PBX is a port. A port is made upof a physical port and a logical port. A physical port represents thephysical connection on a card. A logical port represents the softwarereference point to which an extension number in the software isattached. Extension numbers are software numbers that are attached tological ports. These are then related to physical ports on thePeripheral Card (where actual cables are connected). They are normallythe same but they do not have to be. Each extension number is unique andcannot be related to more than one logical port at any one time. Theserelationships are therefore held across several programs so if physicalport 1 is not related to logical port 1 it can be easy for problems tooccur, the cause of such problems being very difficult to identify.

[0011] A group pickup defines a set of logical ports so that if a callis made to the specific group then only one of the set of telephonesneed answer it. A logical port can be assigned to any number of grouppickups but within any particular group pickup it can only occur once.

[0012] Speed dial numbers are used to reduce the number of digits neededto dial a particular telephone number (either an internal extensionnumber or external telephone number). There is a system-wide speed dialtable as well as a table for each user's configured speed dial set. Thelatter is associated with the user's extension number.

[0013] The size of the PBX determines the number of ports, number ofgroup pick-ups and the number of speed-dials for the system table andpersonal tables.

[0014] Commonly, PBXs are used with digital telephones. A digitaltelephone typically has a set of pre-defined features with whichselected buttons can be programmed. The features are generally stored inthe tables on the exchange and not in the telephone (the PBX may alsohold other information such as the time and date, and routinginformation). A table containing a number of typical such features isshown in Appendix 1. Typically, when being assigned a new telephone, orwhen working at an unfamiliar desk, the only way to find out what aparticular telephone has been programmed to do is to test each buttonand see what happens.

[0015] There are solutions available that allow telephone system cardsto be inserted within a computer, but computers are generally lessreliable than telephone systems. In this type of arrangement, if thecomputer crashes (a not uncommon event) the telephone system is takendown with it. Furthermore, the computer must be on for the telephones towork.

[0016] Another issue which is problematic in known PBXs is that ofprogramming the PBX. Currently, an engineer has to attach a laptopdirectly to the programming port of the PBX (or combined event port if aprogramming port is not present). Via a special software package, he canthen program the PBX. The only way to find out that his changes haveworked is when someone tries using the new features. For example if aparticular telephone is assigned a new alpha tag then the change is onlyapparent when the user next uses the telephone. Changes in groups andgroup picks ups can only be found by trial and error.

[0017] Current PBXs do not have an actual output device. PBX systeminformation, such as system speed dial information, user speed dialinformation, the programmed functions of particular telephones, etc. canonly be downloaded by the engineer from the programming port of the PBXand decoded.

[0018] There is therefore a requirement for an improved communicationsmodule for controlling the operation of a PBX avoiding the abovedisadvantages. In particular, there is a requirement for a system thatallows communication between a computer network and a private branchexchange (PBX), whereby the PBX may be programmed from a computer on thecomputer network. In particular, there is a requirement for such asystem that allows a user easily to program the PBX without having to befamiliar with the particular PBX commands required, or with theparticular logical/physical port correspondence of each device on thenetwork or PBX system. There is also a requirement for such a systemthat may be initially set up by a user, without the need for anengineer. In addition, there is a requirement for such a system whichprevents a user from performing an illegal operation.

[0019] In particular, there is a requirement for a system as describedabove that allows a user readily to configure a telecommunicationsdevice such as a telephone or fax machine, in particular the user's ownallocated telephone.

[0020] Additionally, there is a requirement for a system as describedabove that allows easy display or output of the information held in theworking memory, such as speed dial information or function keyconfiguration. There is also a requirement for a system that allows auser readily to check that programming of the PBX has been successful.

[0021] In addition to the above requirements, there is a requirement fora system that allows backup of the PBX system data and restoration ofbacked-up data.

[0022] There is, in addition, a requirement for a system that allows forremote programming of a PBX by an engineer without using a modem.

[0023] There is also a requirement for such a system that is adaptableto many types of PBX, many different telecommunications devices and alsoto different computer operating systems.

[0024] In addition, there is a requirement for such a system that allowsthe PBX and server to be located at some distance apart, for example inseparate areas of a building.

[0025] There is additionally a requirement for such a system that allowsdifferent classes of user (such as user, administrator, technical,engineer etc.) different levels of access to the system. In addition,there is a requirement for a system which allows disconnection of thecomputer network from the PBX, for example so that a high level user mayprogram the system without interference from commands issued by otherusers. There is also a requirement for such a system that disconnectsthe computer network from the PBX automatically when a control device isconnected to the PBX, and that automatically reconnects the computernetwork to the PBX when the control device is disconnected. Furthermore,there is a requirement for such a system that allows the telephonesystem to work independently of the computer system.

[0026] EP-A-0 866 593 describes a CTI control system for use when firsta telephone belonging to a first office calls up a second telephonebelonging to a second office. A subscriber of the first telephoneoperates a first workstation connected to a computer network and editscamp-on request information when the second telephone is busy. Thecamp-on request information is transferred from the first workstation toa CTI server belonging to the second office connected to the computernetwork. The CTI server performs camp-on control between the secondtelephone belonging to the second office and the first telephonebelonging to the first office by controlling a private branch exchangebased on a schedule corresponding to the received camp-on requestinformation.

[0027] U.S. Pat. No. 5,309,509 describes a graphical interfaceworkstation for use with a manager controller to control and implementchanges to telephone sets of customer key telephone systems served by atelephone switching system.

[0028] It is an object of the present invention to provide improvedmeans for controlling the operation of a Private Branch Exchange (PBX).It is a further object of the present invention to provide such meansfulfilling the above requirements.

[0029] According to the present invention there is provided atelecommunications system comprising a computer network, a privatebranch exchange (PBX) and a communications module for communicatingbetween the computer network and the private branch exchange, thecommunications module being arranged and adapted so as

[0030] a. to store data representing the current state of programming ofthe private branch exchange;

[0031] b. to receive commands from the computer network relevant to theprogramming of the private branch exchange;

[0032] c. to translate the commands received from the compute; networkinto commands suitable for programing the private branch exchange; and

[0033] d. to send the commands suitable for programming the privatebranch exchange to the private branch exchange so as to effectprogramming of the private branch exchange;

[0034] whereby the data stored by the communications module isconsistent with the current state of programing of the private branchexchange.

[0035] The present invention also relates to a computer programcomprising program code for performing all the steps of the systemdefined above when the program is run on a telecommunications systemcomprising a computer network and a private branch exchange.

[0036] The computer network may comprise at least one server computerand a number of client computers connected thereto, the communicationsmodule operating so that the PBX may be programed by means of commandsinput from a computer on the network. Connection between the computernetwork and the PBX may be effected between a server computer and thePBX. Communication between the communications module and the PBX may beeffected using a network protocol such as TCP/IP.

[0037] Data relating to the PBX (PBX system data) may be stored on thecomputer network, particularly preferably on a server computer. The PBXsystem data may include data representing the current state of the PBX(PBX state data). The PBX system data may include data relating to theparticular type of PBX in use (PBX-specific data). The PBX system datamay include data relating to the particular type of computer network inuse (network-specific data).

[0038] The communications module may periodically cause a copy of thecurrent PBX state data to be stored. The copy may be stored on thecomputer network, such as on the server computer. Alternatively or inaddition, the copy may be stored on a separate data storage means, suchas a separate hard disk or a floppy disk. Storage of an updated copy ofthe PBX state data may be occasioned each time the state of the PBX ischanged. Plural copies of PBX state data, each representing a particularprevious state of the PBX, may be stored. There may be “n” stored copiesof PBX state data representing the previous “n” states of the PBX. Acopy of the PBX state data may be stored periodically, each copyrepresenting a periodic backup of the state of the PBX. Alternatively,or in addition, means may be provided which allow a user to initiate thestorage of a set of PBX system data and/or PBX state data.

[0039] Advantageously, the PBX state data may include data relating tofeatures, user access levels, telephone settings, system speed dialtables, personal speed dial tables or group pickup tables.

[0040] Means may be provided for reading a selected stored set of PBXstate data and for programming the PBX with the data so that a selectedprevious state of the PBX may be reproduced, thus providing a facilityfor restoring a previous state of the PBX.

[0041] Means may be provided for downloading from the computer networkor the PBX a file corresponding to the current PBX state data, thedownloaded file being transferred to a control device, editing of thefile being effected using control device, the edited file beingtransferred back to the PBX, whereby the edited file is uploaded ontothe PBX thereby effecting reprogramming of the PBX.

[0042] According to an embodiment, means are provided for displayingand/or printing the PBX system data, particularly the PB state data.

[0043] The PBX-specific data may include data representing those PBXcommands which are suitable for the particular type of PBX in use, thedata being used by the communications module in translating a computernetwork command into a corresponding PBX command.

[0044] The PBX-specific data may include data representing thosecomputer network commands used by the particular type of computernetwork in use, the data being used by the communications module intranslating a computer network command into a corresponding PBX command.

[0045] The PBX may be connected to a number of telecommunicationsdevices, each telecommunications device having associated with it anumber of user input keys, a user putting various functions of thedevice into operation by selecting a particular key or combinations ofkeys, the functions of at least some of the keys or key combinationsbeing programmable, programming of the functions being effected by thePBX. The current state data may include data specific to eachtelecommunications device (device data) corresponding to the functionassociated with particular keys or key combinations.

[0046] The communications module may also include client computersoftware adapted to run on a computer on the network, the clientcomputer software including a user interface whereby, when the softwareis run on a client computer, a user may program the functions of atleast some of the keys of a telecommunications device via the userinterface. The interface may be a graphical user interface. Thegraphical user interface may be a representation of thetelecommunications device to be programmed.

[0047] A user may be allocated a particular computer (allocatedcomputer) and a particular telecommunications device, (allocateddevice), the user being able to use his allocated computer to programhis allocated device. The device data corresponding to each user'sprevious allocated device (previous device data) may be stored; the userbeing able to use his stored previous device data to program his currentallocated device, so that the user can configure a newly allocateddevice with the settings of his previous allocated device, The user mayprogram the allocated device from the allocated computer. The graphicaluser interface appearing on a users allocated computer may correspond toa representation of the user's allocated device.

[0048] Means may be provided for displaying and/or printing the currentdevice data. Means may be provided whereby a label may be printed, thelabel being adapted for use with the allocated device and being printedwith a legend corresponding to the current functions of the various keysassociated with the allocated device.

[0049] The device data may include data relating to features, telephonesettings or personal speed dial tables.

[0050] The communications module may include software which detectswhether or not a user has a sufficiently high access level to performparticular tasks access to such tasks only being granted to suitablyhigh level users. The communications module may include software whichdetects any attempt to perform an operation which is incompatible withthe current state of the telecommunications device (illegal operation),the software acting to disallow such illegal operation.

[0051] Means may be provided so that the computer network can beconnected to or disconnected from the PBX. Such means may be in the formof switching means and may also be adapted so as to allow the connectionof a control device via the switching means to the PBX. The switchingmeans may operate so as to selectively connect either the computernetwork or the control device to the PBX so that the PBX may beprogrammed from either the computer network or the control devicerespectively.

[0052] The switching means may normally operate in a first mode so as toconnect the computer network to the PBX so that the PBX may beprogrammed from the computer network; the switching means being arrangedso that upon connection thereto of a control device, the switching meansautomatically switches into a second mode wherein the computer networkis disconnected from the PBX and the control device is connected to thePBX, so that the PBX may be programmed from the control device. Theswitching means may be further arranged so that upon disconnectiontherefrom of the control device, the switching means automaticallyswitches back into the first mode, so that programming of the PBX mayagain be effected from the computer network.

[0053] For a better understanding of the present invention and to showmore clearly how it may be carried into effect reference will now bemade, by way of example, to the accompanying drawings which showschematically various embodiments of the present invention. The figuresare not to scale. In the drawings:

[0054]FIG. 1 is a diagrammatic representation of a system embodying thepresent invention;

[0055]FIG. 2 shows a telephone suitable for use with the presentinvention;

[0056]FIG. 3 shows details of a system embodying the invention in moredetail;

[0057]FIG. 4 shows the Handset Programmer (HP) main screen;

[0058]FIG. 5 shows a screen displaying user features of the HandsetProgrammer;

[0059]FIG. 6 shows a screen displaying System Administrator features ofthe handset Programmer;

[0060]FIG. 7 shows a screen displaying Advance Technical/Engineeringfeatures of the Handset Programmer accessed via “Technical Features”button in the HP main screen;

[0061]FIG. 8 shows more options relating to AdvanceTechnical/Engineering features accessed via “Dealer/Engineer” button inthe HP main screen;

[0062]FIG. 9 shows the About screen;

[0063]FIG. 10 shows a screen displaying the operation of programming theFlexible Feature buttons;

[0064]FIG. 11 shows the main network portal screen;

[0065]FIG. 12 shows a screen allowing selection of a type of telephone;

[0066]FIG. 13 shows a screen displaying the information entered usingthe HP wizard;

[0067]FIG. 14 shows a personal speed dial screen;

[0068]FIG. 15 shows a system speed dial screen;

[0069]FIG. 16 shows personal speed dial tables to be printed out; and

[0070]FIG. 17 shows a Pickup Group Assignment screen.

[0071] In FIG. 1 a computer network comprises a computer server 1connected to a number of client computers 2, 3, 4. A PBX 5 is connectedto a number of telecommunications devices e.g. telephones 6, 7, 8, faxmachines 9 or other telecommunication devices (not shown). Typically auser will be allocated a particular computer 2, say, and telephone 6,say, which may both be located on the user's desk (not shown). Thecomputer server is connected to the programming port of the PBX 5 via anautomatic disconnect switch 10, the operation of which is described inoutline below and a particular embodiment of which is disclosed in ourcopending UK application no. 0107720.5.

[0072] The automatic disconnect switch 10 is a non-powered automaticdisconnect switch. It consists of a line that connects to the PBXprogramming port and two connectors. One connector connects to thecomputer server 1, and thus to the client computers 2, 3, 4,permanently. The other connector is empty unless an engineer wants toprogram the PBX 5 directly (manually). If so, he connects his laptopcomputer 11 into this empty connector, which causes the line from thecomputer server 1 to be disconnected from the PBX. When the engineer isfinished, he unplugs his laptop computer 11 from the automaticdisconnect switch 10 and the computer server 1 is automaticallyreconnected to the PBX 5. The communications module software monitorsthe state of this line and can detect when the line is broken and thusensure that nothing is sent to the PBX 5 until it is reconnected. ThePBX will continue to operate, although it will not be programmable fromthe computer network during the time the computer network isdisconnected from the PBX. Any users trying to change any informationwill be notified.

[0073] Control devices other than a laptop computer 11 are alsoconnectable to the automatic disconnect switch 10 if desired.

[0074] Also shown schematically in FIG. 1, a communications moduleincludes software 12 running on the computer server 1. Thecommunications module also includes handset programming software (seeFIG. 3) running on each of the client computers 2, 3, 4. The servercomponent 12 (FIG. 1) of the communications module receives computernetwork commands 13 which have been issued from a client computer (itwould also be possible to configure the server computer so that commandscould be input directly at the server). Various sets of data relating tothe system are also stored in a data store 15 located on the server 1.This PBX system data typically comprises data representing the currentstate of the PBX (current state data), data relating to the particulartype of PBX in use (PBX-specific data), and data relating to theparticular type of computer network in use (network-specific data).Furthermore, the PBX system data may also comprise one or more copies ofprevious PBX state data. The server communications module component 12translates the computer network commands 13 into commands suitable forprogramming the PBX (PBX commands, 14), using the PBX system data. ThePBX commands are then transferred, preferably using a network protocolsuch as TCP/IP, to the programming port of the PBX 5 whereby to programthe PBX.

[0075] As discussed, handset programming software is loaded onto eachclient computer 2, 3, 4 and includes a user interface 16, by means ofwhich the user can program the PBX. The user interface is preferably agraphical user interface (GUI, 16) and most conveniently includes arepresentation of the user's allocated telecommunications device 6. Theuser can therefore use known GUI techniques such as drag-and-drop,highlighting, double-clicking etc. to effect programming of theallocated device.

[0076] The communications module may also cause a download of the PBXsystem data to an external device 17 which may be, for example, a floppydisk or other storage means as shown, or may be a modem connection toanother computer. This download may be used as a complete system backup,or may be used in order to remotely reprogram the system. In this case,the downloaded information is sent to an engineer, who can upload theinformation onto a computer and, for example, make system changes thatare too complex to be carried out by a user. The altered PBX system datais then downloaded again onto a data carrier or via a modem and uploadedonto the server.

[0077] A user typically has at least one telephone 6, 7, 8 and acomputer, such as a PC 2, 3, 4 sitting on his desk. The PC is connectedto the organisation's computer network and the user typically has accessto a printer (not shown) via the network. The telephone(s) are connectedto the PBX 5.

[0078] A specific embodiment of the invention will now be described. Inthe following description, the complete communications module will bereferred to as the Telecom Data Network Portal (TDNP), the servercomponent being referred to as the network portal (NP) which resides onthe server 1 and the Handset Programmer (HP) a copy of which resides onany number of client computers 2, 3, 4 within the computer network.

[0079] A main purpose of the NP is to synchronise the state of the PBXto the state defined on the computer network.

[0080] A main purpose of the HP application is to allow the user toprogram his telephone 6 on his desk from his computer 2.

[0081] According to this particular embodiment, the HP also providesvarious user levels to provide features suitable to various differenttypes of user.

[0082] 1. User. The “user” level is aimed at the non-technical personwho just uses the telephone. It allows the user to personally setup/program his phone, incorporating the ability to print labelscorresponding to the programmed functions of the phone control keys on a‘local’ printer on the computer network. The interface is comprehensive(i.e. it lists all of the possible features the telephone can beprogrammed with) and easy to use. It provides on-screen guidance help.

[0083] 2. System Administrator. A typical system administrator would bethe telephone receptionist. The system administrator can do the abovefor his or her own telephone or any user's telephone and extra featuressuch as changing the system speed dial, group pick-up, date and time.

[0084] 3. Technical. A typical technical person is one who understandsthe telephone and computer network, e.g. office service manager. Thislevel has all the previous features and extra features include changingthe date and time for the PBX, change the backup scheduling, synchronisethe TDNP with the PBX now and to use the remote programming facility.

[0085] 4. Engineer. This is typically not a company employee but aspecialist telecommunications engineer trained on all aspects of thePBX. There are two extra features for this level: to store a completebackup (download) of the PBX and to restore a particular backup(upload). The latter feature causes the PBX to temporarily drop all itscalls on its final switch over to real time implementation.

[0086] Features of the Network Portal

[0087] 1. Synchronizes the state of the PBX to the state defined on thecomputer server.

[0088] 2. It downloads (stores) the state of the PBX and keeps a rollingstock of the last 7 copies.

[0089] 3. It uploads (copies) an existing state of the PBX and reloadsit onto the PBX. This means that if the PBX crashes (for whatever reasonbut a very rare event), using this software, the PBX can be reloadedwithout the need of an engineer visit.

[0090] 4. It uploads small changes the user requires for his telephone.

[0091] 5. Provides a mechanism, called remote programming, where thestate of the PBX is sent to the engineer at a remote location so that atechnical alteration can be programmed and the result returned to thecustomer and uploaded to the PBX. This eliminates the need for a specialvisit from an engineer.

[0092] Features of the Handset Programmer Application

[0093] 1. The user can program his flexible feature control buttons onhis digital telephone directly from his PC by using a GUI interface. TheGUI interface displays a picture of the telephone on the screen. Aparticular feature from a list can be “dragged and dropped” onto aspecific virtual control button on the screen. This feature is thenprogrammed automatically for the user on the PBX. For features, such asdirect station select (DSS), that require extra information, the user isgiven a choice of valid options rather than being allowed to type indata which is incorrect.

[0094] 2. At any time, the user can print out a label showing whichfeatures have been programmed for which control button (the paper beingspecially designed for each type of digital phone).

[0095] 3. Speed-dial rings an encoded telephone number. It allows thepersonal speed-dials to be created, viewed, modified, deleted or printedand for a user to be able to view and print the system wide speed dials.

[0096] 4. A user can attach a name (alpha-numeric string) to bedisplayed on the LCD of his telephone (if the telephone has an LCD).

[0097] 5. At the system administrator level functions can be applied toall the telephones immediately, e.g. setting the time.

[0098] 6. The HP will be able to program any form of telephone includingdigital telephones, plain ordinary telephones (POTs) and “Add-On”modules.

[0099] Other Features

[0100] 1. “Dial by Highlighted number” (or Dial from Text). This featurecan read any highlighted number from the screen and the identifiednumber is dialled on the telephone connected via the PBX to the NP fromany software application.

[0101] 2. If a user's telephone line is busy then a message can bedisplayed on the computer screen beside the phone provided the NP is‘logged in’.

[0102] 3. A key on one particular phone or a number of phones can beprogrammed so that upon hitting the key a pre-programmed message couldbe broadcast to the (telephone and/or computer) screens of all users.This would be particularly useful, for example, to raise an alarm offire or similar.

[0103] 4. A person can store their particular telephone details under aname. This information is stored on the system so that the details canbe restored to another telephone. This would enable someone such as asales representative (who is only occasionally on site) to be able toset up a telephone type within the system and be able to ‘adopt’ anyextension while he was on site. Any changes could then be saved for anyfuture visits. It would also be useful for “hotdesking” or when a user'sphone has to be replaced, e.g. because of malfunction.

[0104] 5. Add-on extra flexible feature control button banks may beprogrammed. These modules are connected to the digital telephone andincrease the number of flexible feature control buttons the user canuse.

[0105] This system provides an easy convenient way of setting up a newtelephone system. Prior solutions required an engineer to program thetelephone system before it could be used.

[0106] Should a major telephone system crash occur (which is extremelyrare) then the system can be rebooted via the TDNP and upload the lateststored download.

[0107] Furthermore, in contrast to prior systems, the dedicated link(and AD switch) can be disconnected and the two networks, telephone andcomputer, can continue working independently. If the computer networkbreaks down, for whatever reason, the telephone network will remainfunctional and if the telephone network crashes (exceedingly unlikely)then the computer system will continue to function. The dedicated linkis based on the TCP/IP protocol so that the PBX and computer server canbe placed in separate areas of the company building. This would not beas practical in a prior system.

[0108] A typical telephone suitable for use with the invention is shownin FIG. 2. The telephone typically includes a handset, a dial pad, aspeaker, flexible feature control buttons, an optional LCD display andvarious other components as shown in the diagram and as known in theart. A typical telephone may have 10 or 20 flexible feature controlbuttons, and a typical LCD can display up to 32 characters.

[0109] Extra banks (not shown) of flexible feature control buttons canbe attached to the digital telephone.

[0110] Each telephone can have various items of information associatedwith it and typically held on the telephone itself. Such information mayinclude for example an alpha tag, a set of defined features and apersonal speed dial table.

[0111] The alpha tag is any 16-character sequence. This is used toannotate an extension number so that when a particular extension ringsthen the user can identify who is on the calling telephone.

[0112] Each flexible feature control button can be associated with anyone of a number of features such as those listed in Appendix 1. Some ofthe features require specific data to be added, e.g. direct stationselect (DSS) requires an extension number to be associated. Typicallybutton 1 is the intercom button.

[0113] A personal speed dial table of telephone numbers can be defined.The number of speed dials is dependent on the type of PBX.

[0114] This package can run on a single PC computer or alternatively onany typical PC computer network where at least one computer isdesignated the server and the others clients. The operating system isimmaterial but the current example has been implemented for a 32-bitoperating system e.g. Windows 95, Windows 98, Windows 2000, or WindowsNT 4.0.

[0115] The architecture and operation of the network portal will now bedescribed with reference to FIG. 3. In operation, the network portalsoftware 12 communicates with the PBX 5 and holds a copy of theinformation stored on the PBX and stores it in the data store 15. Anindividual copy of the Handset Programmer 18 resides on each clientcomputer 2. The Handset Programmer 18 ensures that for each feature thatthe user programs for the individual telephone 6 the correct sequence ofcodes is sent to the PBX 5 via the network portal 12. The more advancedfeatures, which affect the overall PBX (and can only be accessed byparticular levels of user), are essentially a particular sequence ofcodes. The features and sequence of codes are totally dependent on thetype of PBX 5 but this generic architecture can be adapted specificallyfor each type of PBX and also for the type of operating system thecomputer network is running. Since the operation of programming the PBXis automated using a GUI, the potential for human error when typing in asequence of codes is eliminated. Furthermore, as discussed above thehandset programmer will not allow an illegal program to be entered, suchas attempting to associate certain features with more than one flexiblecontrol button per telephone, which may cause the system or features tostop working.

[0116] The data store 15 is held on the server 1. The data storecontains several different types of information, such as PBX specificinformation, features information, access level information, a completesystem dump, individual telephone settings, a system speed dial table,personal speed dial tables and group pickup table information. Theseinformation types are held separately as the operations within the NPand HP do not need all of it at any one time.

[0117] The Network Portal 12 is the software package that resides on theserver 1. Its main tasks are to ensure that the data store 15 and thePBX 5 are consistent, to serve the requests from the clients' HPapplications 18, to prevent any information being sent to the PBX 5 ifcommunication is broken between the PBX 5 and server 1 and to disconnecta client 2, 3, 4 from the PBX 5. If the network portal is to be shutdown, for example, then all of the clients 2, 3, 4 need to bedisconnected before the network portal 12 can be closed.

[0118] According to the particular embodiment discussed, the requestinformation is passed between client 2, 3, 4 and server 1 as a string. Astring has the format: command name; arg1; arg2; . . . ; argn where thecommand name is either one or more characters and args can be any lengthseparated by a ‘;’.

[0119] An MSComm event handler 22 is connected to the PBX 5. Itsfunction is to oversee communication between the computer server 1 andthe PBX 5 via the dedicated link. Because the COM port is used on theserver 1, the messages observe the TCP/IP protocol. The event handler 22can detect when the link has been disconnected so that it can prevent(i.e., queue) any requests being processed until the link has beenreconnected.

[0120] The line has three states: idle, busy or logged off. When theline is in the idle state, the event handler 22 uses a timer to send acarriage return down the line to see if it is still connected. If it isnot then the state becomes logged off. The state is set to busy fromidle when the PBX is either being programmed or checked to see if thealtered program has been stored correctly.

[0121] The PBX 5 does not respond with an acknowledgement of what it hasjust done. Actions can only be verified if the appropriate query is madeat a later time to see if the PBX 5 knows about the change. For mostprograms, if the PBX is sent an incomplete program then it returns thecurrent value. This can then be compared with the expected value toascertain whether it has been stored successfully or not. For othercases, certain modes make the PBX 5 yield its information. Thisinformation can be searched to ensure a request has taken place. If therequest has not been implemented then it is made again and a query isagain made later to check the request has been completed.

[0122] An important function of the event handler 22 is to verifywhether the program has been updated. As discussed above, some PBXs donot automatically confirm whether an update has been successful (note:the term program used here is equivalent to a function name followed bya set of parameters). For example, when updating a change for a flexiblefeature control button, the validation stage sends the PBX the programnumber, the logical port number and the button number. The PBX returnsthe program number, the logical port number, the button number and thefeature number. The feature number can then be compared with theproposed changed feature number. If it is the same then the PBX hasimplemented the change, else it has not. There will always be a way offinding out from the PBX whether the information has changed or not.

[0123] The general concept for validating if the program has beenupdated correctly, if the PBX does not return a success value is:

[0124] 1. wait until (line=idle)

[0125] 2. ask PBX relevant question

[0126] 3. the PBX returns an answer

[0127] 4. if (answer=expected answer) return success, else returnfailure

[0128] The Network Portal 12 contains a further series of components 23,24, 25, 26. These are the Ques 23, the Network Portal Control 24, theWinSock Que 25 and the server WinSock software 26.

[0129] The Ques 23 is a standard FIFO (first in first out) queuingsystem. All requests to the telephone system are put into the Ques 23.The head of the queue then links itself to the event handler 22. Theprinciple of operation of the Ques is as follows:

[0130] 1. Is the link there?

[0131] 2. Is there any traffic—if no then have session

[0132] if yes then queue

[0133] 3. Is anyone else in the queue—if no mark as head of queue

[0134] if yes—add to queue and keep looking to see when it becomes headof queue

[0135] 4. When head of queue go to 2 and look to see if there is anytraffic.

[0136] 5. Before session ends must have confirmation that request hasbeen implemented.

[0137] The Network Portal Control 24 operates as follows. Each client 2,3, 4 is required to ‘log in’ to the network portal 12 so that it can begiven a particular WinSock identifier. This identifier can then be usedto know from where the incoming request is coming and where to returneither a message or result. The network portal control software 24interprets each request from the clients into a particular process.There are three types of processes:

[0138] 1. To retrieve information from the data store 15 (some of theserequests do not come via the network portal control software 24 but comedirectly) and send it back to the particular client 2, 3, 4.

[0139] 2. To send the message direct to the PBX 5 via the Ques 23 andtell the client 2, 3, 4 whether it was successful or not via the WinSockQue 25.

[0140] 3. To retrieve further information from the data store 15 thatcan be added to the message before being passed to the Ques software 23and then informing the client 2, 3, 4 the success of the operation viathe WinSock Que 25.

[0141] The main tasks of the WinSock Que 25 are to know which clients 2,3, 4 are logged into the network portal 12 and to handle a FIFO queue ofmessages, each message defining to which client 2, 3, 4 the message hasto be sent and the necessary information to be sent. The WinSock Quecontains two types of information: a list of connected clients and aqueue.

[0142] When a client tries to connect with the network portal, theWinSock Que allocates the client a WinSock identifier and stores thisinformation with the connection identifier in the list of connectedclients. The WinSock identifier is then used to send messages back andforth between the HP and NP software.

[0143] The queue works in a similar manner to the Ques queue:

[0144] 1. Message added to queue

[0145] 2. Is anyone else in the queue—no—mark as head of queue

[0146] yes—add to queue and keep looking to see when it becomes head ofqueue

[0147] 3. When at head of queue send message.

[0148] Messages from the client to the server are passed through theserver WinSock interface 26, which is the message passing system fromthe server to a particular client. It requires a queue so that only onemessage is passed at a time and in an orderly manner.

[0149] The handset programmer HP software 18 will now be described. TheHP software 18 runs on each client computer 2, 3, 4. The HP is driven bya GUI interface 16 (FIG. 1). There is an initialisation wizard that runsthe first time the software is used so the user can set his log in nameand password. This is typically just for the level User. The SystemAdministrator, Technical and Engineer/Dealer user names and passwordsare fixed in the database. As an added level of security, an access keyis also required for the Engineer/Dealer access level.

[0150] The Handset Programmer Control 28 handles the GUI interface.Essentially when a button (including the flexible feature controlbuttons) is chosen it triggers a particular event. Each event maps to aparticular function that will eventually be sent to the network portalvia the client WinSock interface 27 after all the relevant informationhas been gathered (the act of logging out causes the buttons to be‘greyed out’, thus preventing them from being selected so stoppingevents being sent when not connected).

[0151] The client and server WinSock interfaces 27, 26 are a standardMicrosoft TCP/IP client/server application.

[0152] When using the HP 18, the user is required to log on. The log onuser name indicates the level of user, i.e. user, system administrator,technical, engineer/dealer. As an added security measure, the programallows a limited number of attempts, typically five, at logging inbefore terminating.

[0153] When the user has successfully logged in, all the currentinformation about the allocated telecommunications device (for example,telephone 6) is retrieved from the server, such as speed dial table andflexible function control button information (a copy is made of thisinformation so a user can always undo any changes up to a previous saveor login). The HP 18 also fetches the complete list of features/commandsthat are available for this particular access level. On the main screenGUI interface (see FIG. 4) there are five boxes under the main menu box.The boxes are User/Common Features, System Administrator/AdvanceFeatures, Technical Features, Dealer Engineering and About.

[0154] The complete list of features is sorted into two lists: ones thatcan be used at the user level (see FIG. 5) and ones that can be used atthe System Administrator level (see FIG. 6). The technical level menushows the extra features for this access level (see FIG. 7). Theengineer level shows the extra features allowed beside the extratechnical features (see FIG. 8). The About button gives informationabout the package (see FIG. 9). Because of the way in which GUIinterfaces work, the main screen is not displayed until the entireinformation gathering is complete.

[0155] At this point the information held on the client 2, 3, 4 is:

[0156] 1. List of features that can be programmed at this level.

[0157] 2. List of tips (one for each feature and accessed via commandcode number).

[0158] 3. List of control buttons and their associated feature (i.e.command code).

[0159] 4. List of personal speed dials.

[0160] The main screen GUI interface then drives what the user ispermitted to do. When features are not permitted at this access level,the option is ‘greyed out’.

[0161] To program the flexible feature control buttons (see FIG. 10),the user needs to select a button. The interface highlights the buttonand uses an arrow to point to it. The current feature setting is shownin the current Handset setting box. The user then chooses a feature outof the common feature list and drags it to the selected button. Thelabel on the button will change as will the information in the currentHandset setting box. The alteration can then be saved or undone byclicking on the appropriate button found at the left bottom. FIG. 10shows the screen that displays all the information to enable the user toprogram a flexible feature control button. In practice, the button to beprogrammed is highlighted. The current programmed feature is displayed.A help tip on how to do this operation is also displayed. When a newfeature is selected, the help tip is changed to show what the featuredoes.

[0162] To program the speed dials (both system and personal) the CREATEtab has to be selected. A box (not shown) then appears giving the user achoice of selecting either the PERSONAL button or the SYSTEM button.

[0163] The box also gives the user a choice of pressing the GROUP PICKUPbutton, which allows the user to program the group pickup table.

[0164] To print various items of information, the PRINT tab has to beselected. The user is then given the opportunity of pressing a KEYSTRIPS button (not shown) which allows a label to be printed for theflexible feature control buttons. The user may alternatively wish toprint the speed dials (either system or personal): this can be achievedby selecting either the PERSONAL button or the SYSTEM button (notshown).

[0165] To log on to and log off from the network portal the NETWORK tabhas to be selected and then the user can select either a LOG ON or LOGOFF button (not shown).

[0166] To log on as another user (which requires at least SystemAdministrator access level) firstly a user must log off from the networkportal then change the properties by choosing the SETTINGS tab followedby the PROPERTIES button (not shown). Finally the user logs in using theNETWORK tab and LOG ON button.

[0167] The HP GUI interface 16 (FIG. 1) displays a virtual copy of thetelephone on the desk and therefore displays the features that have beenassigned to the flexible feature control buttons. Normally a user wouldhave to write on the telephone what feature was programmed for thatcontrol button. Using the invention, it is possible to print out a labelto place over the buttons to show the current programmed state.

[0168] It is possible to print the label onto normal paper, but it ispreferable to use specifically-designed labels so there are holes forthe buttons. A typical label layout gives 4 labels per A4 sheet, thelabels being laid out so that only one label need be printed one at atime on a local printer. The A4 sheet can be flipped over so thatpartial sheets of labels can be fed into the printer via a sheet feeder.Such a sample label is reproduced as Appendix 2. The preferred labelsare printed on paper with perforated holes and cut lines.

[0169] Other items of information that can be printed out are the systemand personal speed dial tables. Some telephones have special drawers orrecesses for the storage of such printed tables. Conveniently, theprinted table may be formatted so as to fit into such a drawer orrecess. Using the PRINT tab of the main screen and the appropriatebutton, the user can print the appropriate table on a local printer onstandard A4 paper and cut it to size. On some PBXs there is no way ofbeing able to output the speed dial tables. Only by trial and error canthe user establish what the tables are and, if an engineer does notdocument how the tables are set up, this information can be difficult todetermine. On more modern PBXs, this information is available via theLCD of a digital telephone. However, a system according to the currentinvention allows easy display and output of such information.

[0170] In the event an engineer is required to carry out (complex)programming procedures, there are several ways in which these procedurescan be programmed into the PBX

[0171] 1) The engineer can connect his laptop computer 11 (FIG. 1) viathe AD switch 10 directly to the PBX 5.

[0172] 2) The engineer can terminate the NP software 12 on the server 1and can launch a standard software hyper terminal. He can then use theserver COM port (to which the dedicated line is attached), or a USBport, to program the PBX 5.

[0173] 3) A remote programming facility can be used. The process isdivided into distinct stages.

[0174] a) The technical officer (office service manager) will advise theengineer of the particular programming task required.

[0175] b) A copy, for example an encrypted copy, of the latest downloadfrom the PBX is sent (e.g., by e-mail or post) to the engineer.

[0176] c) The engineer can then produce a partial upload of all thechanged programs for the customer's PBX.

[0177] d) This can be encrypted and sent back to the customer (e.g., bye-mail or post).

[0178] e) The technical officer can then upload the changes to the PBX.

[0179] f) A power cycle then needs to be implemented for these changesto be effective.

[0180] A copy of the working memory of the PBX is distributed across anumber of tables stored in the data store 15. There are variousdifferent types of tables, including programs, telephones, personalspeed dials, system speed dials, group pickup, access levels, processor.The stored information represents PBX-specific data, PBX state data,network-specific data etc. Full downloads of the PBX working memory arestored in a particular place, for example as encrypted text files. Theymay also be downloaded to a separate storage device 17.

[0181] On the data store 15 there is a table that contains all theprograms that can be altered with the TDNP. This table is only a subsetof the full download. The only way to alter the other programs notincluded in this set is to either use the remote programming feature orby an engineer directly accessing the program(s). The next completedownload would store these changes.

[0182] Also on the data store 15 is the telephones table, which is atable containing all the active logical ports. Each logical port has anextension name, alpha tag, phone type and a list of features assigned tothe flexible feature control buttons. The list of features is the samelength as the number of flexible feature control buttons. The liststarts with button number 1 and continues in sequence to the maximumbutton. There must always be one feature defined for each button. When anew logical port is activated and assigned a particular telephone typethen it will automatically be initialised with a list of features tomatch this telephone type.

[0183] Also present is a system speed dial table. A speed dial defines anumber to identify itself, an alphanumeric tag to show a meaningful nameand a number that is either an internal extension number or an externaltelephone number. The size of the system speed dial table is dependenton the information held in the processor table. Not all of the speeddial numbers have to be used. Only active system speed dials are stored.

[0184] Similarly, there is a personal speed dial table. For each activelogical port a corresponding speed dial table may be defined. Theinformation held is the same as for the system speed dials, i.e. eachspeed dial defines a number to identify itself, an alphanumeric tag toshow a meaningful name and a number that is either an internal extensionnumber or an external telephone number.

[0185] Group Pickup information is also stored as a table on the datastore 15. The PBX defines the number of group pickups allowed. The grouppickup information is stored by specifying the information per activelogical port (note: the GUI interface translates the logical port nameto its extension name to make it more understandable). Each port has anarray whose length is the same as the maximum number of groups. Eachindex of the array corresponds to the group identifier as groups arenumbered starting from 1. The contents of the index are set to either 0or 1 to indicate whether the port is included in the group or not. Thismechanism prevents a port being duplicated within a group.

[0186] A table is also provided containing Access Level details. Thiscontains the specific names and passwords for the levels other than theUser. The user password is stored in the local client's registry. Theother access level passwords are general and have to be stored on theserver as any client can have the ability to log in with one of theselevels. Multiple clients should not use certain features at the sametime, e.g. modifying the group pickup table. The network portal can spotthis potential problem and give a user a warning message if someone elseis currently using this feature. The user need not observe the warningand therefore may not get the desired result but the PBX will not be inan invalid state. This allows a system administrator to be logged in onmore than one client at a time.

[0187] A processor table contains information on the type of PBX and twoparameters that determine the number of speed dials and the number ofgroup pickups allowed.

[0188] Operation of the Network Portal 12 will now be further described.On initialisation of the Network Portal, it assumes a particular portnumber. This port number (name) is the TCP/IP port address used by theWinSock Que 25 under the Windows operating system. If there is a clashthen the number can be changed via the GUI. A note must be made of thisnumber, together with the server name (host name). The host name andport name are vital parameters that are used by the HP to ‘log on’ tothe server.

[0189] The main network portal screen is shown in FIG. 11. The primarytask of this screen is to show what is happening (analogous to TaskManager on a Windows operating system). It shows

[0190] 1. Who is logged onto the server 1.

[0191] 2. The state of the event handler 22 (whether there is aconnection between the PBX 5 and computer network 1, 2, 3, 4, or not).

[0192] 3. If there is a PBX download in progress. If the line becomesdisconnected then the screen shows a warning message (see FIG. 11). Thesoftware allows one feature to be activated—to disconnect a client.

[0193] Initialisation of the Handset Programmer is convenientlyperformed using a Wizard, as follows. The wizard renders initialisationof the HP a task readily performed by a user without the need foradministrator or engineer intervention. The wizard includes thefollowing steps:

[0194] 1. Launch the Handset Programmer Wizard

[0195] 2. Obtain network portal details. The user inputs the Host Nameand Port number.

[0196] 3. Select type of digital telephone (see FIG. 12). The user isrequired to input the extension number and select the telephone type.

[0197] 4. The next form asks for the log in details. The user isrequired to input the Host Name, User Name, Password and to confirm thepassword is correct.

[0198] 5. The final form shows all the details of the registration (seeFIG. 13). An answer “yes” at this point stores the relevant information.

[0199] The main routine is structured into the following sequence.

[0200] 1. The user logs in successfully

[0201] 2. The access level is set and the feature information for theaccess level is retrieved from the server.

[0202] 3. The information for the particular extension is retrieved fromthe server.

[0203] 4. The information is manipulated to suit the manner in which itis to be displayed via the GUI interface. Whether the user is logged inand the access level both determine whether a button is ‘greyed out’.

[0204] 5. The main screen is then loaded.

[0205] From this point the PBX can be programmed by using the standardGUI object-oriented technique of a case statement, which includes eachparticular event that can occur, embedded within a repeat loop until theEXIT event is chosen.

[0206] The GUI interface of the telephone has a virtual grid placed overit. The array of buttons belongs to the telephone. The position of abutton relates to the actual button number. The LCD (if the telephonehas one) displays the alpha tag if defined or else it displays theextension number. The program is now controlled by a series of eventsthat are related to the mouse clicks by the user. The object-orientedcode automatically converts the position of the mouse click to aparticular object and a particular event. Each anticipated event foreach type of object is associated with the code necessary to perform theexpected function.

[0207] The events are: Event Type Action USER FEATURES see descriptionbelow SYSTEM ADMINISTRATOR see description below ADVANCE FEATURESTECHNICAL FEATURES see description below DEALER/ENGINEERING seedescription below FEATURES ABOUT displays information until user closesscreen. CREATE Shows 4 buttons as discussed above: Personal Speed Dial,System Speed Dial and Group Pickup. Described in further detail below.PRINT see description below NETWORK logs user off/on. SETTINGS Shows 3buttons: Settings - allow system administrator or above to changeextension number. Must then log out and log in before it takes effect.Password - change password for access level Access Key - change accesskey only for engineering level Date + Time - see below. EXIT log outfrom network portal and stop the application.

[0208] The log-in sequence proceeds as follows:

[0209] 1. Draw start-up screen (not shown).

[0210] 2. Repeat:

[0211] a. Display Login form (not shown). The user inputs the User Nameand Password (note that for a user logging in at the user level thepassword is stored in the client registry whereas for the higher levelsthe password is stored on the server).

[0212] b. If (access level==USER) verify password from client registry.

[0213] c. Else verify (access level, password) on server.

[0214]3. Until correct or 5^(th) time.

[0215]4. If still not verified then stop.

[0216]5. Else set level permission flag.

[0217] The feature or commands information is specific to the type ofPBX and is stored on the server. This information is fetched from theserver and sorted into two lists. One list is used for the User featuresand the other is used for the System Administrator advance features. Theadvance features list is the complete list, whereas the User list is asubset. The technical and engineering features are determined in theclient software.

[0218] The specific extension telephone information is retrieved fromthe server as follows:

[0219] 1. Connect to server.

[0220] 2. Request key mappings giving extension number and type oftelephone.

[0221] 3. Server returns a string containing the list of key mappings.

[0222] 4. Create two lists: one as the original and one for the current.

[0223] 5. Load the lists with the key mapping information.

[0224] 6. Request active extension set.

[0225] 7. Server returns a string containing the list of activeextensions.

[0226] A series of manipulations then takes place as follows:

[0227] 1. Create map from logical port name to extension name (the GUIneeds to display the extension name but the data is stored via thelogical port name).

[0228] 2. Associate command to each flexible feature button.

[0229] 3. Set connection set to connected.

[0230] 4. Attach label to each flexible feature button.

[0231] 5. Add tool tips.

[0232] 6. Draw main GUI interface (see FIG. 4).

[0233] To program the flexible feature control buttons a sequence ofevents is required as follows:

[0234] 1. Mark the button to be programmed.

[0235] 2. Select a program from the user common feature if accesslevel=USER else from the System Administrator Advance Features.

[0236] 3. Using the mouse, drag the feature to the button.

[0237] 4. Map feature to button, update label of feature to button thenredisplay main form.

[0238] A button is always marked/highlighted. A feature is always loadedwith a default. The user can change either the button selected or chosenfeature. The event of ‘dragging’ the feature to the button causes thealteration in mapping.

[0239] There are several events that can be triggered at this point.SAVE saves the mapping information by sending the updated key mappingsinformation to the server and therefore to the PBX. UNDO undoes the lastmapping. UNDO ALL copies the original mappings to the current mappings.MAIN MENU return to GUI main screen

[0240] For the special features that require extra information there isan additional step between 2 and 3. There is a pull down box that allowsthe user to select the appropriate information. For example, in usingthe DSS feature (see Appendix 1), the user must select an extensionnumber before he can associate the feature with the flexible functioncontrol button.

[0241] The user can change his personal speed dials or the SystemAdministrator can change the system speed dials or a particular personalspeed dial. FIGS. 14 and 15 show system and personal speed dial screensrespectively. The same object type is used for both, but each instanceis customised either for a personal speed dial table or the system speeddial table. Three fields define a speed dial table: number, name andkey. The table can be sorted by any of the columns and the columns ofthe table can be swapped over. There are four possible events: SAVE,REFRESH, PRINT or CLOSE.

[0242] SAVE takes the information input from the user and updates thetable and sends it to the network portal via WinSock. WinSock Que willreturn the success of the save. If the save is successful then the tablewill be automatically refreshed.

[0243] REFRESH for personal speed dial retrieves the logical port numberfor this extension from the Telephones information from the server. Itthen fetches the particular personal speed dial table for this logicalport from the network portal data store. It then displays the table.

[0244] REFRESH for system speed dial fetches the system speed dial tablefrom the network portal data store. It then displays the table.

[0245] The PRINT function carries out the same request to retrieve theappropriate speed dial table. It then sends the information to a specialreport generator that prints out the table. The report generator marksthe shape of the table so that it can be cut to fit into the specialtelephone drawer (see FIG. 16).

[0246] The CLOSE button closes the window and saves any information ifrequired and not already saved.

[0247] The print speed dial tables use the same code as for the printfunction from the speed dial window (see FIG. 16).

[0248] The print key stubs use the information held in the Telephonesfor this particular logical port. The information is manipulated intothe correct form for the special report generator to print onto thespecial label paper (see Appendix 2).

[0249]FIG. 17 shows the main screen of the Pickup Group Assignments.This is first launched when the CREATE tab and Group Pick Up button areselected. The screen displays the group information on the left handside and the possible active extensions on the right hand side. It isimportant to bear in mind an extension can only be assigned once to aparticular group.

[0250] The high level procedure is:

[0251] 1. Get list of active extensions from network portal.

[0252] 2. Get group pickup information from network portal.

[0253] 3. Translate information to table of ports and their group pickupinformation.

[0254] 4. Take a copy of the table.

[0255] When the extension name is highlighted and the ADD button orREMOVE button clicked then the group pickup information is scanned tocheck to see if the port can be allocated or de-allocated for thisgroup.

[0256] When the user selects the SAVE button then the information issent back to the network portal software and stored in the group pickupdata store and sent to the PBX.

[0257] If the UNDO button is clicked then the copy is copied to theworking copy and the screen refreshed.

[0258] Technical and Engineering features will now be described. Thereare six defined features to choose from (only four if at the technicalaccess level).

[0259] 1. Set Date and Time.

[0260] 2. Change auto scheduling.

[0261] 3. Synchronize database with PBX.

[0262] 4. Remote programming.

[0263] 5. Backup data from PBX (download).

[0264] 6. Restore data to PBX (upload).

[0265] To set the date and time, the user inputs the new values andthese are encoded into the appropriate PBX program and sent to thenetwork portal which in turn sends the data to the PBX. All the digitaltelephones, which have LCD displays, are then automatically updated withthe new date and time.

[0266] Remote Programming is a three-part process as follows:

[0267] 1. Retrieve the current state of the PBX and send it to theengineer.

[0268] 2. Restore the amended data to the PBX.

[0269] 3. PBX disaster recovery for emergency use only.

[0270] The first part causes a specific download file to be sent(e-mailed) to the engineer together with a message confirming thechanges that are required and, if appropriate, the type of payment.

[0271] The second part loads the file returned (by e-mail) from theengineer to the server and uploads this to the PBX and then synchronisesthe PBX with the data store on the server.

[0272] Should the new changes cause problems then by selecting the thirdoption, the Handset Programmer will automatically trigger the NetworkPortal to upload the ‘Safety net’ file.

[0273] In retrieving data, there is a strict sequence of GUI screensthat ensure the user inputs all the information required. The sequenceof events is as follows.

[0274] The latest download of the PBX is sent to the client that hasinitiated the remote programming feature (securely encrypted ifdesired). This information is stored in a file. Either an e-mail iscreated or the file is copied onto suitable data storage means such as a3.5″ floppy disk that can be sent by post.

[0275] When the ‘amended data file’ arrives (either by e-mail or on diskby post) the user must store the ‘amended data file’ somewhere on theclient.

[0276] The process for restoring the data is:

[0277] 1. Handset Programmer gets the filename of the ‘amended datafile’.

[0278] 2. Handset Programmer sends the ‘amended data file’ to theNetwork Portal.

[0279] 3. If (‘Safety net’ file date is not the current date) NetworkPortal copies the latest backup file of the PBX to a special ‘Safetynet’ file.

[0280] 4. Network Portal uploads the ‘amended data file’.

[0281] 5. Return to Handset Programmer.

[0282] When the network portal is first installed onto the computerserver, it downloads the information on the PBX and stores the data in afile marked as “Original”. This copy is never altered or removed fromthe server by the software. It remains there in case the software isremoved and the original state restored to the PBX.

[0283] The network portal takes a daily backup of the PBX in background.This can take some time (about 10 minutes) so it is set to operate at aquiet time when the PBX usage is minimal. The technical user can changethe time of this automatic dump (change auto scheduling feature). Thenetwork portal then issues an automatic download to a new file when thistime is reached and deletes the oldest (seventh) copy (this does notapply to the “original” copy).

[0284] Synchronising causes the PBX to be interrogated and to retrieveand store those programs that are held within the data store on theserver.

[0285] At any time the engineer can carry out an immediate download ofthe PBX. This means the entire set of programs is stored in a specificfile on the server. This would be sensible just before the engineer isto make any manual changes. The network portal automatically keeps apredetermined number (e.g., seven) of dumps on a rolling store.

[0286] An upload selects the file to be uploaded, then uploads the fileto the PBX and then synchronises the PBX with the data store. Appendix 1Feature Name Description Account Code Select and program feature under abutton, then press to enter a Voluntary Account code anytime during anExchange Line call without interrupting the conversation. Alarm Enablesthe turning off a telephone alarm connected to a facility alarmmechanism. All Call Voice Allows the user to page all of Page thedigital and electronic telephones in the All Call Page group. AutomaticBusy Allows the user to set up Redial Automatic Busy Redial afterreceiving busy tone on a dialled Exchange line call. Note: This featureis only available when using DASSII and other suitable digital circuits.Automatic Call Allows the user to recall Back Busy a busy extension orDo Not Disturb (DND) extension; the user may set Automatic Callback tohave the system call him back when the called extension becomesavailable. Background Music Enables the user to turn BGM On or OFF overthe user's extension speaker. Call Forward All Forwards all calls toanother Calls extension, location, or voice mail device. If theextension is idle or busy and has this feature activated, all calls toit will forward immediately. The extension will not ring. Call ForwardForwards calls immediately to Busy another extension or voice maildevice when the extension is busy or in the Do Not Disturb Mode. Callswill ring as normal if the telephone is idle. Call Forward Forwardscalls immediately to Busy/No Answer another extension or voice maildevice when the extension is busy or in the Do Not Disturb Mode. Callswill also forward if a call is not answered withn a default timedesignated in system programming. Call Forward No Forwards callsimmediately to Answer another extension or voice mail device when thetelephone is not answered after a default time period designated insystem programming. Call Forward Enables the user to forward newExternal incoming calls to a destination outside of the system. OtherCall Forward modes can be set simultaneously with Call Forward-External. To forward calls to a required destination the user needs toprogram Speed Dial Key *49. This can be carried out using the personalspeed dial feature. Call Pickup Initiates a Directed Call DirectedPickup of Exchange line, internal, and page calls. Call Pickup 1, If thesystem is shared by 2, 3, 4 tenants, the Directed Pickup 1-4 buttonswill pick up ringing Exchange line calls for Tenants 1-4 respectively.DSS Enables the user to ring a preselected extension. The LED associatedwith each DSS button provides the status (idle/busy) of the extensionassigned to that button. If connected to an Exchange line, pressing thisbutton will put the outside party on hold. The user can transfer thecall normal, by voice announcing or camping on by hanging up. MicrophoneCut- Enables the user to turn the off microphone off/on while idle,providing privacy when the user receives handsfree internal calls. Themicrophone is functional when the extension receives calls - theMicrophone Cut-off button controls the microphone when the useroriginates calls. Night Transfer Select the appropriate button T1 to T4to control th Exchange line ringing patterns of the system forafter-hours incoming calls for any of the tenants who share a singleSTRATA DK system. Pool Lines Permits access to an available Exchangeline from a group of lines appearing under one button Privacy BlocksPrivacy override on common Exchange line buttons. This button does notblock Busy Override of Excutive Override. Privacy Release Releasesprivacy on common Exchange line buttons, enabling other extension usersto enter conversations on those buttons. Call Forward All Allows allinternal and Exchange Calls Fixed line calls to the extension to forwardimmediately to an extension pre-set in system programming, once thisbutton is activated. Call Group Enables the user to pick up a Pickupcall that is ringing an extension that belongs to a Pickup Group thatthe extension is a member of. Note: the user may belong to more than onegroup - see the system administrator for group assignments. Do NotDisturb Allows the user to lock the extension in or out of the Do NotDisturb (DND) mode. When button is activated, internal calls will notring the extension and calls can not be transferred to it. IncomingExchange line calls will mute ring at the extension. The user cancontinue to make calls as normal while in DND mode Door Lock Button Whenactivated will unlock a 0 to 4 door for 3-6 seconds, depending on systemprogramming. The Unlock Door LED will turn on for however long the dooris unlocked. LCD Message Allows system and personal Select Buttonmessages to be displayed on the optional 32-character Liquid CrystalDisplay (LCD) Messages Waiting Allows the Message Waiting LED and Recallto flash to indicate that a message is waiting. Pressing this buttonwill initiate a call back to the extension or voice-mail device thatactivated the LED. Pause Sets pause in speed dial telephone numbers.Pause Long Sets a 10 second pause in speed dial telephone numbers.Redial Last Enables the user to have the Number system redial the lasttelephone number dialled from the extension, or begin to store a speeddial number. Release Allows the user to disconnect a call and to placethe extension in the idle condition. Save Last Number When activated,allows the user to SAVE the number dialled (whether an outside orinternal number), so that later the system can automatically redial thenumber when the button is pressed after accessing an outside line or theinternal intercom. Speed Dial Enables the user to call a Selecttelephone number with a brief access code or an optional feature button.There are two types of Speed Dial numbers Personal Speed Dials or SystemSpeed Dials. The user can create and print Personal Speed Dials but onlyprint System Speed Dials. System Administrator however, can create andprint System Speed Dials. Extension Enables the user to program(Personal) Speed individual Personal Speed Dial Select Dial access codesunder a button. Note: Speed Dial Key *49 is used to forward calls to arequired destination. Extension Enables the user to program (System)Speed individual System Speed Dial Dial Select access codes under abutton. Tone Enables the user to change exchange line dial signals toTone (DTMF) whilst on the line. The user must set his telephone for tonedialling AFTER the telephone number has been dialled. The telephone musthave a Tone Dial Select button assigned in system programming to accessthis feature. Start When selected will indicate when system dialling iscomplete and send the digits to line. Sub Address Allows digitalextension (DKT/ EKT) users to separate the Dialled number andSub-Address by pressing this feature key. Exchange Lines 1- Indicatesindividual Exchange 136 Line access of appearing calls. When pressedthis will access an outside line. Note: this does not apply to PooledExchange line keys. Pooled Lines Enables Multiple Exchange Lines toappear under one key. Press to activate an available Exchange line froma group of lines appearing under one button. Lock When activated enablesthe Lock/Unlock procedure to be executed. Intercom Access When pressedgives an internal Key dial tone.

[0287]

APPENDIX 3 Glossary of terms used AD switch A physical switch thatconnects a computer server to the telephone exchange system and isautomatically disconnected if an engineer plugs his laptop computer intothe switch. client/server A distributed, flexible group of machineswhere one computer is designated the server and the others are clients.COM port Communication port CTI Computer Telephony Integration. Theprocess by which a PBX passes certain information to a computer,allowing the computer to manage the call based on commands from asoftware application. download Copies data from the PBX FIFO First infirst out HP See handset programmer handset Software application runningon client programmer digital A telephone that uses 0 and 1 to sendinformation telephone greyed out GUI interfaces have a notion of beinghidden or visible. If they are visible, i.e. can be chosen, then thetext is written in black. If they are ‘hidden’, i.e. temporarily beenremoved from choice, then they are written in grey. GUI interface GUIstands for graphical user interface. An operating system or environmentthat displays program choices and options on the screen as icons, orpicture symbols. Laptop computer Portable PC Network Portal Softwarerunning on server NP See Network Portal PBX Private branch exchange,i.e. internal telephone exchange system. PC Personal computer port Apoint of access into the PBX power cycle The power cycle requires anengineer to shut down the PBX and wait for 10 seconds before powering itback up. server See client/server TAPI Telephony Application ProgrammingInterface. This is used to create a link between a Windows basedapplication and a telephone system. TCP/IP Transmission Control Protocol/Internet Protocol. A set of layered protocols that enables sharedapplications among PCs, hosts or workstations in a high-speedcommunications environment to communicate. TDNP Telecom Data NetworkPortal. terminal The user interface to a communications system,typically a keyboard and CRT. TSAPI Telephony Services ApplicationProgramming Interface. A telephony programming interface from Novell andAT & T. Designed to interface a telephone PBX with a NetWare server toprovide interoperability between PCs and telephone equipment. uploadCopies data to the PBX USB port Universal Serial Bus port

1. A telecommunications system comprising a computer network (1, 2, 3,4) a private branch exchange (5) and a communications module forcommunicating between the computer network and the private branchexchange, characterised in that the communications module is arrangedand adapted so as: a. to store data representing the current state ofprogramming of the private branch exchange (5); b. to receive commands(13) from the computer network (1, 2, 3, 4) relevant to the programmingof the private branch c. to translate the commands (13) received fromthe computer network into commands (14) suitable for programming theprivate branch exchange (5); and d. to send the commands (14) suitablefor programing the private branch exchange to the private branchexchange (5) so as to effect programing of the private branch exchange(5); whereby the data stored by the communications module is consistentwith the data representing the current state of programming of theprivate branch exchange.
 2. A telecommunications system as claimed inclaim 1, characterized in that the computer network (1, 2, 3, 4)comprises at least one server computer (1) having a number of clientcomputers (2, 3, 4) connected thereto.
 3. A telecommunications system asclaimed in claim 2, characterised in that connection between thecomputer network (1, 2, 3, 4) and the private branch exchange (5) iseffected between the server computer (1) and the private branch exchange(5).
 4. A telecommunications system as claimed in any preceding claim,characterised in that communication between the communications moduleand the private branch exchange (5) is effected using a networkprotocol.
 5. A telecommunications system as claimed in any precedingclaim, characterised in that data representing the current state ofprogramming of the private branch exchange is stored on a servercomputer (1).
 6. A telecommunications system as claimed in any precedingclaim, characterised in that means are provided which allow a user toinitiate the storage of a set of all or part of the data representingthe current state of programming of the private branch exchange.
 7. Atelecommunications system as claimed in any preceding claim,characterised in that the data representing the current state ofprogramming of the private branch exchange include data relating to theparticular type of computer network in use.
 8. A telecommunicationssystem as claimed in claim 7, characterised in that the data relating toa particular type of computer network includes data representing thosecommands (13) receivable from the computer network used by theparticular type of computer network in user the data being used by thecommunications module in translating a command (13) from the computernetwork into a corresponding command (14) suitable for programming theprivate branch exchange.
 9. A telecommunications system as claimed inany preceding claim, characterised in that the data representing thecurrent state of programing of the private branch exchange includes datarelating to the particular type of private branch exchange (5) in use.10. A telecommunications system as claimed in claim 9, characterised inthat the data representing the current state of programing of theprivate branch exchange includes data representing those commands (14)suitable for programming the private branch exchange which are suitablefor the particular type of private branch exchange (5) in use, the databeing used by the communications module in translating a command (13)received from the computer network into a corresponding command (14)suitable for programming the private branch exchange.
 11. Atelecommunications system as claimed in any preceding claim,characterised in that the data representing the current state ofprogramming of the private branch exchange includes data relating tofeatures, user access levels, telephone settings, system speed dialtables, personal speed dial tables end group pickup tables.
 12. Atelecommunications system as claimed in any preceding claim,characterised in that means are provided for downloading from thecomputer network (1, 2, 3, 4) a file corresponding to the datarepresenting the current state of programming of the private branchexchange, the downloaded file being transferred to a control device(11), editing of the file being effected using the control device (11),the edited file being transferred back to the private branch exchange(5), whereby the edited file is uploaded onto the private branchexchange (5) thereby effecting reprogramming of the private branchexchange (5).
 13. A telecommunications system as claimed in any one ofclaims 1 to 11, characterised in that means are provided for downloadingfrom the private branch exchange (5) a file corresponding to the datarepresenting the current state of programming of the private branchexchange, the downloaded file being transferred to a control device (11)for editing, and the edited file being transferred back to the privatebranch exchange (5), whereby the edited file is uploaded onto theprivate branch exchange (5) thereby effecting reprogramming of theprivate branch exchange (5).
 14. A telecommunications system as claimedin any preceding claim, characterised in that a copy of the daterepresenting the current state of programming of the private branchexchange is stored on the computer network.
 15. A telecommunicationssystem as claimed in claim 14, characterised in that the copy of thedata representing the current state of programming of the private branchexchange is stored on a server computer (1).
 16. A telecommunicationssystem as claimed in any preceding claim, characterised in that a copyof the data representing the current state of programming of the privatebranch exchange is stored on a separate data storage means (17).
 17. Atelecommunications system as claimed in claim 16, characterised in thatthe copy of the data representing the current state of programming ofthe private branch exchange is stored on a separate hard disk (17). 18.A telecommunications system as claimed in claim 16, characterised inthat the copy of the data representing the current state of programmingof the private branch exchange is stored on a separate floppy disk (17).19. A telecommunications system as claimed in any preceding claim,characterised in that the system is adapted to store an updated copy ofdata representing the current state of programming of the private branchexchange is occasioned each time the programming of the private branchexchange is changed.
 20. A telecommunications system as claimed in claim19, characterized in that plural copies of the data representing thecurrent state of programming of the private branch exchange, eachrepresenting a particular previous state of the private branch exchange(5), are stored.
 21. A telecommunications system as claimed in anypreceding claim, characterised in that a copy of the data representingthe current state of programming of the private branch exchange isstored periodically, each copy representing a periodic backup of thestate of the private branch exchange (5).
 22. A telecommunicationssystem as claimed in any preceding claim, characterised in that meansare provided for reading a selected stored set of the data representingthe current state of programming of the private branch exchange.
 23. Atelecommunications system as claimed in claim 22, characterised in thatmeans are provided for programming the private branch exchange (5) withthe data so that a selected previous state of the private branchexchange (5) reproducible, thus providing a facility for restoring aprevious state of the private branch exchange (5).
 24. Atelecommunications system as claimed in any preceding claim,characterised in that means are provided for displaying all or part ofthe data representing the current state of programming of the privatebranch exchange.
 25. A telecommunications system as claimed in anypreceding claim, characterised in that means are provided for printingall or part of the data representing the current state of programming ofthe private branch exchange.
 26. A telecommunications system as claimedin claim 25, characterised in that means are provided for printing alabel, the label being adapted for use with the allocated device andbeing printed with a legend corresponding to the current functions ofthe various keys associated with the allocated device.
 27. Atelecommunications system as claimed in any preceding claim,characterised in that the private branch exchange (5) is connected to anumber of telecommunications devices (6, 7, 8).
 28. A telecommunicationssystem as claimed in claim 27, characterised in that eachtelecommunications device (6, 7, 8) has associated with it a number ofuser input keys whereby various functions of the device are selectableby way of a particular key or combinations of keys.
 29. Atelecommunications system as claimed in claim 28, characterised in thatthe function of at least some of the user input keys or key combinationsare programmable, programming of the functions being effected by theprivate branch exchange.
 30. A telecommunications system as claimed inclaim 29, characterised in that the data representing the current stateof programming of the private branch exchange includes data specific toeach telecommunications device (6, 7, 8).
 31. A telecommunicationssystem as claimed in claim 30, characterized in that the data specificto each telecommunications device corresponds to the function associatedwith particular keys or key combinations,
 32. 32. A telecommunicationssystem as claimed in claim 30 or 31 characterised in that the dataspecific to each telecommunications device includes data relating tofeatures, telephone settings or personal speed dial tables.
 33. Atelecommunications system as claimed in any preceding claim,characterised in that means is provided for allocating a particularcomputer (2, 3, i) and a particular telecommunications device (6, 7, 8)to a particular user, and in that means is provided to enable anallocated computer to program a respective allocated device.
 34. Atelecommunications system as claimed in claim 33, characterised in thatthe means is provided to transfer data corresponding to a previousallocated device, so as to configure from the allocated computer a newlyallocated device with the settings of a previous allocated device.
 35. Atelecommunications system as claimed in any preceding claim,characterized in that means are provided for connecting or disconnectingthe computer network (1, 2, 3, 4) from the private branch exchange (5).36. A telecommunications system as claimed in claim 35, characterised inthat such means for connecting to or disconnecting from the privatebranch exchange (5) is in the form of switching means (10).
 37. Atelecommunications system as claimed in claim 36, characterised in thatsuch switching means (10) is adapted so as to allow the connection of acontrol device (11) via the switching means (10) to the private branchexchange (5).
 38. A telecommunications system as claimed in claim 37,characterised in that the switching means (10) is adapted to operate soas to selectively connect either the computer network (1, 2, 3, 4) orthe control device (11) to the private branch exchange (5) so that theprivate branch exchange (5) is adapted to be programmed from either thecomputer network (1, 2, 3, 4) or the control device (11) respectively.39. A telecommunications system as claimed in claim 38, characterised inthat the switching means (10) is adapted to operate normally in a firstmade in which the computer network (1, 2, 3, 4) is connected to theprivate branch exchange (5) so that the private branch exchange (5) isprogrammable from the computer network (1, 2, 3, 4).
 40. Atelecommunications system as claimed in claim 39, characterised in thatthe switching means (10) is arranged so that upon connection thereto ofa control device (11), the switching means (10) is adapted toautomatically switch into a second mode wherein the computer network (1,2, 3, 4) is disconnected from the private branch exchange (5) and thecontrol device (11) is connected to the private branch exchange (5), sothat the private branch exchange (5) is programmable from the controldevice (11).
 41. A telecommunications system as claimed in claim 39 or40, characterised in that the switching means (10) is further arrangedso that, upon disconnection therefrom of the control device (11), theswitching means (10) is adapted automatically to switch back into theoriginal mode in which the private branch exchange (5) is againprogrammable from the computer network (1, 2, 3, 4).
 42. A computerprogram comprising program code (12) for performing all the steps of anypreceding claim when said program is run on a telecommunications systemcomprising a computer network (1, 2, 3, 4) and a private branch exchange(5).
 43. A computer program as claimed in claim 42 and including programcode comprising a user interface (16) whereby, when the program is runon a telecommunications system comprising a computer network (1, 2, 3,4) including at least one server computer (1) having a number of clientcomputers (2, 3, 4) connected thereto, functions of at least some of thekeys of a telecommunications device (6, 7, 8) are programmable via theuser interface (16).
 44. A computer program as claimed in claim 43,characterised in that the user interface is a graphical user interface(16).
 45. A computer program as claimed in claim 44, characterised inthat the graphical user interface (16) is a representation of thetelecommunications device (6, 7, 8) to be programmed.
 46. A computerprogram as claimed in any one of claims 42 to 45, characterized in thatprogram code is included which is adapted to detect whether or not auser has a sufficiently high access level to perform particular tasks.47. A computer program as claimed in claim 46, characterised in thatprogram code is provided to grant access to perform particular tasksonly to suitably high-level users.
 48. A computer program as claimed inany one of claims 42 to 47, characterised in that program code isincluded which is adapted to detect any attempt to perform an operationwhich is incompatible with the current state of the telecommunicationsdevice (6, 7, 8).
 49. A computer program as claimed in claim 48,characterized in that the program code is adapted to disallow anyoperation that is incompatible with the current state of thetelecommunications device.